package com.explorati.design_pattern.hybrid.observermediator;

import net.sf.cglib.proxy.Dispatcher;

//场景应用类
public class Client {

	public static void main(String[] args) {
		// 获得事件分发类
		EventDispatch dispatch = EventDispatch.getEventDispatch();
		// 接收乞丐对事件的处理
		dispatch.registerCustomer(new Beggar());
		// 接收平民对事件的处理
		dispatch.registerCustomer(new Commoner());
		// 接收贵族对事件的处理
		dispatch.registerCustomer(new Nobleman());
		// 建立一个产品生产工厂
		ProductManager factory = new ProductManager();
		// 制造一个产品
		Product p = factory.createProduct("IBM笔记本电脑");
		// 修改一个产品
		factory.editProduct(p, "Dell笔记本电脑");
		try {
			// 克隆一个产品
			factory.clone(p);
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		// 销毁产品
		factory.abandonProduct(p);
	}
}
/**
 * 
 * 平民处理事件：IBM笔记本电脑创建，事件类型=NEW_PRODUCT 贵族处理事件：Dell笔记本电脑修改，事件类型=EDIT_PRODUCT
 * 贵族处理事件：Dell笔记本电脑克隆，事件类型=CLONE_PRODUCT 乞丐处理事件：Dell笔记本电脑销毁，事件类型=DEL_PRODUCT
 */
